#include <cstdio>
#include <vector>
#include <queue>
#include <utility>
#include <cstring>
#include <cmath>
using namespace std;
typedef pair<int, int> pii;
typedef pair<int, double> pid;

#define MAXN 205
#define XYDIS(x1,y1,x2,y2) (sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)))
#define DINF 1e9
#define MIN(a,b) (a<b?a:b)
#define MAX(a,b) (a>b?a:b)

int N;
pii V[MAXN];
vector<pid> G[MAXN];
double G2[MAXN][MAXN];
double dis[MAXN];
bool vis[MAXN];
//int prev[MAXN];

void input() {
	for (int i=1; i<=N; i++) {
		int x, y;
		scanf("%d%d", &x, &y);
		V[i] = make_pair(x, y);
	}
	for (int i=1; i<=N; i++) {
		G[i] = vector<pid>();
		for (int j=1; j<=N; j++) {
			G2[i][j] = DINF;
			if (i==j) continue;
			double d = XYDIS(V[i].first, V[i].second, V[j].first, V[j].second);
			G[i].push_back(make_pair(j, d));
			G2[i][j] = d;
		}
	}
}

void SPFA() {
	queue<int> q;
	for (int i=1; i<=N; i++) {
		dis[i] = DINF;
		vis[i] = false;
		//prev[i] = 0;
	}
	dis[1] = 0;
	vis[1] = true;
	q.push(1);
	while (!q.empty()) {
		int u = q.front(); q.pop();
		for (vector<pid>::iterator it=G[u].begin(); it!=G[u].end(); it++) {
			int v = it->first;
			double c = it->second;
			if (dis[v] > MAX(dis[u], c)) {
				dis[v] = MAX(dis[u], c);
				//prev[v] = u;
				if (!vis[v]) {
					vis[v] = true;
					q.push(v);
				}
			}
		}
		vis[u] = false;
	}
}

int main() {
	int k = 1;
	while (true) {
		scanf("%d", &N);
		if (N==0) break;
		input();
		SPFA();
//		double max = 0;
//		for (int i=1; i<=N; i++) {
//			printf("%d ", prev[i]);
//		}
//		for (int u=2; prev[u]!=0; u=prev[u]) {
//			max = MAX(max, G2[prev[u]][u]);
//		}
		printf("Scenario #%d\nFrog Distance = %.3f\n\n", k, dis[2]);
		k++;
	}
	return 0;
}
